#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//int main()
//{
//	for (int i = 1; i <= 9; i++)
//	{
//		for (int j = 1; j < i + 1; j++)
//		{
//			printf("%d*%d=%-2d ", j, i, i * j);
//		}
//		printf("\n");
//	}
//	return 0;
//}
//
//
//#include<stdio.h>
//int main()
//{
//	int arr[10] = { 0 };
//	for (int i = 0; i < 10; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	int max = 0;
//	for (int i = 0; i < 10; i++)
//	{
//		if (arr[i] > max)
//			max = arr[i];
//	}
//	printf("%d\n",max);
//	return 0;
//}
//
//#include<stdio.h>
//int main()
//{
//	int num = 1;
//	double sum = 0.0;
//	for (int i = 1; i <= 100; i++)
//	{
//		sum += 1.0 / i;
//		num *= -1;
//	}
//	printf("%lf", sum);
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	int num = 0;
//	for (int i = 0; i < 100; i++)
//	{
//		if (i % 10 == 9)
//			num++;
//		if (i / 10 == 9)
//			num++;
//	}
//	printf("%d\n", num);
//	return 0;
//}

//#include<stdio.h>
//#include<stdbool.h>
//#include<math.h>
//int main()
//{
//	for (int i = 100; i < 200; i++)
//	{
//		bool flag = 1;
//		for (int j = 2; j <= sqrt(i); j++)
//		{
//			if (i % j == 0)
//			{
//				flag = 0;
//				break;
//			}
//		}
//		if (flag)
//			printf("%d ", i);
//	}
//	return 0;
//}
//
//#include<stdio.h>
//int main()
//{
//	for (int i = 1000; i <= 2000; i++)
//	{
//		if (i % 400 == 0 || (i % 100 != 0 && i % 4 == 0))
//			printf("%d ", i);
//	}
//	return 0;
//}

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d%d", &a, &b);
	while (a % b)
	{
		c = b;
		b = a % b;
		a = c;
	}
	printf("%d", b);
	return 0;
}